﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Drawing;
using Fiuba.Algo3.Titiritero;

namespace BattleCity
{
    public delegate void DelegadoObjetos(IObjetoVivo ob);
    public delegate void DelegadoClear();
    public class Objetos : IEnumerable<IObjetoVivo>
    {
        //Atributos
        private void nada() { }
        private void nada(IObjetoVivo ob) { }

        public event DelegadoObjetos ObjetoAdd;
        public event DelegadoObjetos ObjetoDel;
        public event DelegadoClear ObjetosClear;
        

        //Propiedades
        public List<IObjetoVivo> Items
        {
            get;
            private set;
        }

        //Constructor
        public Objetos()
        {
            ObjetoAdd += new DelegadoObjetos(nada);
            ObjetoDel += new DelegadoObjetos(nada);
            ObjetosClear += new DelegadoClear(nada);
            this.Items = new List<IObjetoVivo>();
            
        }

        //Metodos
        public bool Add(Objeto objeto)
        {
            if (!Escenario.getEscenario().DetectarImpacto(objeto))
            {
                this.Items.Add(objeto);
                ObjetoAdd(objeto);
                return true;
            }
            return false;
        }
        public void Remove(Objeto objeto)
        {
            ObjetoDel(objeto);
            this.Items.Remove(objeto);
        }
        public void Clear()
        {
            this.Items.Clear();
            ObjetosClear();
        }
        
        public System.Collections.Generic.IEnumerator<IObjetoVivo> GetEnumerator()
        {
            return this.Items.GetEnumerator();
        }
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }

    }    

}
